package com.huawei.spider.cnki.plugins;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

/**
 * @Author: liminghui
 * @Date: 2020/5/17 9:19
 * @Version:
 * @Description:
 */
public class UserInput {
    private static Map<String, String> conditionValueMap;//各个条件在传输时候的固定标识符
    private static Map<String, String> searchConditionMap;//各个条件的中文意思
    private static Map<String, String> searchTypeMap;//各个条件类型的固定标识符

    static {
        conditionValueMap = new HashMap<>();
        conditionValueMap.put("a", "SU$%=|");
        conditionValueMap.put("b", "KY");
        conditionValueMap.put("c", "TI");
        conditionValueMap.put("d", "AB");
        conditionValueMap.put("e", "FT");
        conditionValueMap.put("f", "RF");
        conditionValueMap.put("g", "CLC$=|?");

        searchConditionMap = new HashMap<>();
        searchConditionMap.put("a", "主题");
        searchConditionMap.put("b", "关键词");
        searchConditionMap.put("c", "篇名");
        searchConditionMap.put("d", "摘要");
        searchConditionMap.put("e", "全文");
        searchConditionMap.put("f", "被引文献");
        searchConditionMap.put("g", "中图分类号");

        searchTypeMap = new HashMap<>();
        searchTypeMap.put("a", "and");
        searchTypeMap.put("b", "or");
        searchTypeMap.put("c", "not");

    }


    public Map<String, String> get_uesr_inpt() {
        Map<String, String> condition_fields = search_condition();
        Map<String, String> source_fields = searchSource();
        condition_fields.putAll(source_fields);
        System.out.println("正在检索中.....");
        System.out.println("－－－－－－－－－－－－－－－－－－－－－－－－－－");
        return condition_fields;
    }

    public Map<String, String> search_condition() {
        Map<String, String> searchCfgMap = new HashMap<>();
        Scanner scanner = new Scanner(System.in);
        System.out.println("－－－－－－－－－－－－－－－－－－－－－－－－－－");
        System.out.println("|　　　　　　　　　　　　　　　　　　　　　　　　　|");
        System.out.println("|　请选择检索条件：（可多选）　　　　　　　　　　　|");
        System.out.println("|（ａ）主题　　　（ｂ）关键词　　　（ｃ）篇名　　　|");
        System.out.println("|（ｄ）摘要　　　（ｅ）全文　　　　（ｆ）被引文献　|");
        System.out.println("|（ｇ）中图分类号　　　　　　　　　　　　　　　　　|");
        System.out.println("|　　　　　　　　　　　　　　　　　　　　　　　　　|");
        System.out.println("－－－－－－－－－－－－－－－－－－－－－－－－－－");
        System.out.println("请选择（以空格分割，如a c）：");
        String inputLine = scanner.nextLine();
        String[] split = inputLine.trim().split(" ");
        System.out.println("－－－－－－－－－－－－－－－－－－－－－－－－－－");
        System.out.println("您选择的是：");
        // 用户二次检查
        StringBuilder sb = new StringBuilder();
        for (String item : split) {
            sb.append(" ").append(searchConditionMap.get(item)).append(" | ");
        }
        System.out.println(sb.toString());
        System.out.println("－－－－－－－－－－－－－－－－－－－－－－－－－－");

        //具体每一项的value
        for (int i = 0; i < split.length; i++) {
            System.out.println("请输入【" + searchConditionMap.get(split[i]) + "】：");
            String condition_value = scanner.nextLine().trim();
            //第一个不能选择条件类型，所以没有这个字段
            if (i != 0) {
                System.out.println("请输入【" + searchConditionMap.get(split[i]) + "】条件类型:（ａ）并且　（ｂ）或者　（ｃ）不含 ");
                String condition_type_value = scanner.nextLine().trim();
                searchCfgMap.put("txt_" + (i + 1) + "_logical", searchTypeMap.get(condition_type_value));
            }
            searchCfgMap.put("txt_" + (i + 1) + "_sel", conditionValueMap.get(split[i]));
            searchCfgMap.put("txt_" + (i + 1) + "_value1", condition_value);
            searchCfgMap.put("txt_" + (i + 1) + "_relation", "#CNKI_AND");
            searchCfgMap.put("txt_" + (i + 1) + "_special1", "=");
        }
        return searchCfgMap;
    }

    //搜索期刊来源
    public Map<String, String> searchSource() {
        Map<String, String> searchSourceMap = new HashMap<>();
        System.out.println("－－－－－－－－－－－－－－－－－－－－－－－－－－");
        System.out.println("是否需要规定文献来源（y/n）？");
        Scanner scanner = new Scanner(System.in);
        String flag = scanner.nextLine();
        if (flag.equalsIgnoreCase("y")) {
            System.out.println("输入文献来源期刊名称：");
            String source = scanner.nextLine();
            searchSourceMap.put("magazine_value1", source);
            searchSourceMap.put("magazine_special1", "%");
        }
        return searchSourceMap;
    }
}
